今天宠物迷的小编给各位宠物饲养爱好者分享java 接口怎么写的宠物知识,其中也会对java怎么定义一个接口?(java怎么定义一个接口的数据)进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!
java中接口的定义和接口的实现 1.接口的定义 使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下: [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; } 修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。 接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。 extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。 方法:接口中的方法只有定义而没有被实现。 例如,定义一个用于计算的接口,在该接口中定义了一个常量PI和两个方法,具体代码如下: 1 public interface CalInterface 2 { 3 final float PI=3.14159f;//定义用于表示圆周率的常量PI 4 float getArea(float r);//定义一个用于计算面积的方法getArea() 5 float getCircumference(float r);//定义一个用于计算周长的方法getCircumference() 6 } 注意: 与Java的类文件一样,接口文件的文件名必须与接口名相同。 2.接口的实现 接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下: [修饰符] class [extends 父类名] [implements 接口列表]{ } 修饰符:可选参数,用于指定类的访问权限,可选值为public、abstract和final。 类名:必选参数,用于指定类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。 extends 父类名:可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数。 implements 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。 在类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。例如,编写一个名称为Cire的类,该类实现5.7.1节中定义的接口Calculate,具体代码如下: 1 public class Cire implements CalInterface 2 { 3 public float getArea(float r) 4 { 5 float area=PI*r*r;//计算圆面积并赋值给变量area 6 return area;//返回计算后的圆面积 7 } 8 public float getCircumference(float r) 9 { 10 float circumference=2*PI*r; //计算圆周长并赋值给变量circumference 11 return circumference; //返回计算后的圆周长 12 } 13 public static void main(String[] args) 14 { 15 Cire c = new Cire(); 16 float f = c.getArea(2.0f); 17 System.out.println(Float.toString(f)); 18 } 19 } 在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔。这时就可能出现常量或方法名冲突的情况,解决该问题时,如果常量冲突,则需要明确指定常量的接口,这可以通过“接口名.常量”实现。如果出现方法冲突时,则只要实现一个方法就可以了。下面通过一个具体的实例详细介绍以上问题的解决方法。
接口(interface)是一些方法特征的集合,这些方法特征来自于具体方法,这些方法符合它们一般来自于一些在系统中不断出现的方法。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。在Java语言中,Java接口还可以定义public的变量。
public interface Test{
public static final int num; //成员常量具有固定的修饰符:public static final
public abstract void method; //成员函数具有固定的修饰符:public abstract
}
public class Testimpl implements Test{
// 实现接口中的所有方法
.....
}
将以下四个文件放在同一个目录下编译运行:
文件1:
/**MyApp.java**/
public class MyApp {
public static void main(String[] args) {
IBaseGraphics c1 = new Circle(5);
IBaseGraphics r1 = new Rectangle(3,4);
c1.printData();
r1.printData();
}
}
文件2:
/**IBaseGraphics.java**/
public interface IBaseGraphics {
public double computeCircumference();//计算周长
public double computeSquare ();//计算面积
public void printData();
}
文件3:
/**Circle.java**/
public class Circle implements IBaseGraphics {
private double r = 0.0;
public Circle(double r){
this.r = r;
}
public double computeCircumference() {
return 2*Math.PI*r;
}
public double computeSquare() {
return Math.PI*r*r;
}
public void printData() {
System.out.println("该圆形的周长:"+this***mputeCircumference()+";面积:"+this***mputeSquare());
}
}
文件4:
/**Rectangle.java**/
public class Rectangle implements IBaseGraphics {
private double width = 0;
private double length =0;
public Rectangle(double width, double length){
this.width = width;
this.length = length;
}
public double computeCircumference() {
return 2*(width+length);
}
public double computeSquare() {
return width * length;
}
public void printData() {
System.out.println("该长方形的周长:"+this***mputeCircumference()+";面积:"+this***mputeSquare());
}
}
public interface CanRead { public Object read(); } class R1 implements CanRead { @Override public Object read() { return null; } }
public interface IntStack {
public void push(int x);
public int pop();
public void show();
}
public class MyIntStack implements IntStack {
private int[] arrStack;
public MyIntStack(int length) {
arrStack = new int[length];
for( int i=0;i<length;i++ )
arrStack[i]=-1;
}
public void push(int x) {
System.out.println(x);
}
public int pop() {
System.out.println("pop");
}
public void show(){
System.out.println("show");
}
}
<%=
request.getservername()%>
服务器的域名
<%=
java****.inetaddress.getlocalhost().gethostaddress()
%>
服务器的ip地址
服务器正在运行的端口
其实原理和正常的接口没什么区别,主要是为了规范操作。
对于具体的数据请求方式、请求方式、响应数据格式要看你的接口要求,这是通用代码: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java****.HttpURLConnection;import java****.URL;public class Test { public static void main(String[] args) throws IOException { System.out.println(getData()); } public static String getData() throws IOException { // 创建指定url的url对象,这里的地址是:淘宝商品搜索建议 URL url = new URL("https://suggest.taobao***m/sug?code=utf-8&q=电脑&callback=cb"); // 创建http链接对象 HttpURLConnection con = (HttpURLConnection) url.openConnection(); // 设置请求方式 con.setRequestMethod("POST"); // 打开链接,上一步和该步骤作用相同,可以省略 con***nnect(); // 获取请求返回内容并设置编码为UTF-8 BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); // 将返回数据拼接为字符串 StringBuffer sb = new StringBuffer(); // 临时字符串 String temp = null; // 获取数据 while ((temp = reader.readLine()) != null) { sb.append(temp); } // 关闭流 reader.close(); return sb.toString(); }}结果:
public static String sendPostUrl(String url, String param, String charset) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; }
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
1、两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。
2、接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
3、Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new 运算符实例化一个接口。如 x=new comparable(......);//这个是错误来的。但是可以声明接口变量Comparable x; //这是允许的。
4、Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public、静态的和final属性。即接口中的属性可以定义为 public static final int value=5;
5、这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。
6、范例
定义接口格式:
[public]interface 接口名称 [extends父接口名列表]
{
//静态常量
[public] [static] [final] 数据类型变量名=常量值;
//抽象方法
[public] [abstract] [native] 返回值类型方法名(参数列表);
}
实现接口格式:
[修饰符] class 类名[extends 父类名] [implements 接口A,接口B,···]
{
类成员变量和成员方法;
为接口A中的所有方法编写方法体,实现接口A;
为接口B中的所有方法编写方法体,实现接口B;
}
本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“java怎么定义一个接口?”